home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / MiscKit1.7.1 / MiscKit / Examples / MiscStringService / Controller.m < prev    next >
Text File  |  1995-04-12  |  2KB  |  86 lines

  1. // Copyright 1995 Carl Lindberg.
  2. // Use is governed by the MiscKit license
  3.  
  4. #import "Controller.h"
  5. #import <misckit/MiscString.h>
  6.  
  7. @implementation Controller
  8.  
  9. //This code was pretty much taken from the example in the documentation for
  10. //Services.  It's pretty basic; it only does ascii transfers.
  11. //To cut down on code, I just used the User Data: field in the services.txt
  12. //file to be different numbers, then I just atoi that here to figure out
  13. //which service is requested.  I probably should've #defined some things
  14. //or at least made an enumerated type to make it more readable, but oh well.
  15. //It's not so big as this should be a problem.
  16.  
  17. - alterText:(id)pasteboard userData:(const char*)userData error:(char **)msg;
  18. {
  19.   const char *types[1];
  20.   id theString;
  21.   char *data;
  22.   int length, i = atoi(userData);
  23.   
  24. //  printf("%s\n",userData);
  25.   
  26.   [pasteboard types];    // pretend to check the pasteboard types
  27.  
  28.   if ([pasteboard readType:NXAsciiPboardType data:&data length:&length]) {
  29.     theString = [MiscString newWithString:""];
  30.     [theString cat:data n:length];
  31.     switch (i) {
  32.       case 0:
  33.         // I assume someone played with the User Data: fields if this happens
  34.         *msg = "Don't play with services.txt!!";
  35.     [theString free];
  36.     return self;
  37.     break;
  38.       case 1: 
  39.         [theString toLower];
  40.     break;
  41.       case 2:
  42.         [theString toUpper];
  43.     break;
  44.       case 3:
  45.         [theString invertCases];
  46.     break;
  47.       case 4:
  48.         [theString reverse];
  49.     break;
  50.       case 5:
  51.         [theString capitalizeEachWord];
  52.     break;
  53.       case 6:
  54.         [theString trimSpaces];
  55.     break;
  56.       case 7:
  57.         [theString trimLeadSpaces];
  58.     break;
  59.       case 8:
  60.         [theString trimTailSpaces];
  61.     break;
  62.       case 9:
  63.         [theString squashSpaces];
  64.     break;
  65.      }
  66.     types[0] = NXAsciiPboardType;
  67.     [pasteboard declareTypes:types num:1 owner:nil];
  68.     [pasteboard writeType:NXAsciiPboardType data:(char *)[theString stringValue] length:[theString length]];
  69.     
  70.     [theString free];
  71.    }
  72.   else *msg = "Error: couldn't alter text.";
  73.   
  74.   return self;
  75. }
  76.  
  77. // Have to let the workspace know where to find us
  78. - appDidInit:sender
  79. {
  80.   id theListener = [NXApp appListener];
  81.   [theListener setServicesDelegate:self];
  82.   return self;
  83. }
  84.  
  85. @end
  86.